using Godot;
using System;

public partial class GenerateRect : Node
{
    [Export] private StringName _mFilePath;
    [Export] private Color _mColor;
    [Export] private int _mSize; // 正方形边长

    private static void SaveRectTexture(string filePath, int size, Color color)
    {
        // 生成正方形纹理
        Texture2D texture = GenerateRectTexture(size, color);
        
        // 获取图像
        Image image = texture.GetImage();
        
        // 将Godot资源路径转换为系统绝对路径
        string absolutePath = ProjectSettings.GlobalizePath(filePath);
        
        // 确保目录存在
        string directory = System.IO.Path.GetDirectoryName(absolutePath);
        if (!string.IsNullOrEmpty(directory) && !DirAccess.DirExistsAbsolute(directory))
        {
            DirAccess.MakeDirRecursiveAbsolute(directory);
        }
        
        // 保存为PNG
        Error error = image.SavePng(absolutePath);
        
        if (error == Error.Ok)
        {
            GD.Print($"正方形纹理已保存到: {absolutePath}");
        }
        else
        {
            GD.PrintErr($"保存失败: {error}");
        }
    }
    
    // 生成正方形纹理的方法
    private static ImageTexture GenerateRectTexture(int size, Color color)
    {
        // 创建指定大小的图像，透明背景
        Image image = Image.CreateEmpty(size, size, false, Image.Format.Rgba8);
        
        image.Fill(Colors.Transparent);
        
        // 填充正方形区域
        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                image.SetPixel(x, y, color);
            }
        }
        
        return ImageTexture.CreateFromImage(image);
    }
    
    // 使用示例
    public override void _Ready()
    {
        SaveRectTexture(_mFilePath, _mSize, _mColor);
    }

    
}
